package no.hib.dat102.mengde.klient;

import no.hib.dat102.mengde.adt.*;
import no.hib.dat102.mengde.kjedet.KjedetMengde;
import no.hib.dat102.mengde.tabell.TabellMengde;

import java.util.Scanner;

public class MainOrdnlister {

	public static void main(String[] args) {

		KjedetMengde<String> ordListe1 = new KjedetMengde<String>();

		String[] ord = { "God", "dag", "Hans", "Hansen", "Hansaby", "Olsen",
				"Ole", "buss", "rute", "Bergen" };

		Scanner tastatur = new Scanner(System.in);

		// Legger til ordene i mengden ordListe1
		for (int i = 0; i < ord.length; i++)
			ordListe1.leggTil(ord[i]);

		KjedetMengde<String> ordListe2 = new KjedetMengde<String>();

		System.out.print("Oppgi en streng, avslutt med zzz :");
		String streng = tastatur.nextLine();

		// Leser inn ord

		while (!streng.equals("zzz")) {

			if (ordListe1.inneholder(streng)) {
				System.out.println("ordListe1 inneholder " + streng);
			} else {
				System.out.println("ordListe1 inneholder ikke " + streng);

			}
			// Legger innleste ord inn i ordliste2
			ordListe2.leggTil(streng);
			System.out.print("Oppgi en streng, avslutt med zzz :");
			streng = tastatur.nextLine();

		}// while

		// Lager unionen av de to ordlistene
		KjedetMengde<String> ordListeBegge = new KjedetMengde<String>();

		ordListeBegge = (KjedetMengde<String>) ordListe1.union(ordListe2);

		System.out.println("Utskrift av begge ordlistene:");
		String hentStreng = "";
		while (!ordListeBegge.erTom()) {
			hentStreng = ordListeBegge.fjernTilfeldig();
			System.out.println(hentStreng);

		}
		// Lager snittet av de to ordlistene (de ordene som er i begge)
		KjedetMengde<String> ordlisteSnitt = new KjedetMengde<String>();
		ordlisteSnitt = (KjedetMengde<String>) ordListe1.snitt(ordListe2);
		System.out
				.println("Utskrift av snittet (de ordene som finnes i begge ordlistene):");
		String hentStreng2 = "";
		while (!ordlisteSnitt.erTom()) {
			hentStreng2 = ordlisteSnitt.fjernTilfeldig();
			System.out.println(hentStreng2);

		}

		// Lager differensen mellom de to ordlistene (de ordene som kun finnes i
		// den ene)
		KjedetMengde<String> ordlisteDiff = new KjedetMengde<String>();
		ordlisteDiff = (KjedetMengde<String>) ordListe1.differans(ordListe2);
		System.out
				.println("Utskrift av differensen (de ordene som kun er i ordliste 1):");
		String hentStreng3 = "";
		while (!ordlisteDiff.erTom()) {
			hentStreng3 = ordlisteDiff.fjernTilfeldig();
			System.out.println(hentStreng3);
		}
	}
}
